import re
import os


# def alter(file, old_str, new_str):
#     with open(file, "r", encoding="utf-8") as f1, open("%s.bak" % file, "w", encoding="utf-8") as f2:
#         for line in f1:
#             f2.write(re.sub(old_str, new_str, line))
#     os.remove(file)
#     os.rename("%s.bak" % file, file)


# def alter(file, old_str, new_str):
#     """
#     将替换的字符串写到一个新的文件中，然后将原文件删除，新文件改为原来文件的名字
#     :param file: 文件路径
#     :param old_str: 需要替换的字符串
#     :param new_str: 替换的字符串
#     :return: None
#     """
#     with open(file, "r", encoding="utf-8") as f1, open("%s.bak" % file, "w", encoding="utf-8") as f2:
#         for line in f1:
#             if old_str in line:
#                 line = line.replace(old_str, new_str)
#             f2.write(line)
#     os.remove(file)
#     os.rename("%s.bak" % file, file)


# alter("file1", "python", "测试")
def alter(file, old_str, new_str):
    """
    替换文件中的字符串
    :param file:文件名
    :param old_str:旧字符串
    :param new_str:新字符串
    :return:
    """
    file_data = ""
    with open(file, "r", encoding="utf-8") as f:
        for line in f:
            if old_str in line:
                line = line.replace(old_str, new_str)
            file_data += line
    with open(file, "w", encoding="utf-8") as f:
        f.write(file_data)


if __name__ == "__main__":
    root_path = r'D:\Project\Utils'
    txt_path = root_path + r'\data'
    txt_list = os.listdir(txt_path)
    for i in range(0, len(txt_list)):
        path = os.path.join(txt_path, txt_list[i])
        if '.txt' in path:
            alter(path, "0", "2")
        else:
            print('not txt file', i)
